define(function () {

    var WeekdayCheckBtnGroup=function (config){
  		var group=this;
  		config=config || {};
  		group.changeCallback=config.onChange || function(){};
  		group.$dom=$('<span class="weekdayCheckBtnGroup"></span>');
  		group.$valueTips=$('<span class="valueTips"></span>').appendTo(group.$dom);
  		function addDayBtn(){
  			for(var i=0,len=7;i<len;i++){
  				var checkBtn=new CheckBtn();
  				var dayText=('day'+i).tr('datetime');
  				checkBtn.$input.on('change',function(){
  					group.changeCallback();
  					group.showTips();
  				});
  				checkBtn.$icon.append(dayText);
  				checkBtn.$dom.addClass('dayBtn').appendTo(group.$dom);
  				group['btn'+i]=checkBtn;
  			}
  		}
  		addDayBtn();
  		group.getValue=function(){
  			var valueArr=[];
  			for(var i=0,len=7;i<len;i++){
  				var btn=group['btn'+i];
  				if(btn.checked()){
  					valueArr.push(i);
  				}
  			}
  			return valueArr;
  		}
  		group.setValue=function(newValueArr){
  			var valueArr=[];
  			for(var i=0,len=7;i<len;i++){
  				var btn=group['btn'+i];
  				if(newValueArr.indexOf(i)>=0){
  					btn.checked(true);
  				}else{
  					btn.checked(false);
  				}
  			}
  			group.showTips();
  			return group;
  		}
  		group.showTips=function(){
  			var tipsStr='';
  			var groupValue=group.value();
  			if(groupValue.length>=7){
  				group.$valueTips.removeClass('error').html('每天');
  				return false;
  			}
  			$.each(groupValue, function(i,v) {
  				tipsStr+=('day'+v).tr('datetime')+',';
  			});
  			if(tipsStr!==''){
  				tipsStr=tipsStr.substr(0,tipsStr.length-1);
  				tipsStr='每'+tipsStr;
  				group.$valueTips.removeClass('error').html(tipsStr);
  			}else{
  				group.$valueTips.addClass('error').html('请选出时间规律');
  			}
  		}
  		group.value=function(newValue){
  			if(newValue===undefined){
  				return group.getValue();
  			}else{
  				if($.isArray(newValue)){
  					group.setValue(newValue);
  				}else{
  					console.error('weekday checkbtn group value must be array!');
  				}
  				return group;
  			}
  		}
  	}
    window.WeekdayCheckBtnGroup = WeekdayCheckBtnGroup;
    return WeekdayCheckBtnGroup;
})
